package cn.dai;

import java.io.File;
import java.io.RandomAccessFile;

/**
 * @author ArkD42
 * @file 1 - Java基础语法
 * @create 2020 - 04 - 22 - 15:41
 */
public class RandomAccessFileTest {
    public static void main(String[] args) throws Exception {
        insert();
    }

    static void insert() throws Exception {
        RandomAccessFile raf = new RandomAccessFile("sample.txt","rws");

        raf.seek(2); // 拨动指针到指定位置

        // 设置一个字符串的缓冲类，用于保存我们读取的内容，长度不会超过这个文件的字节长度
        StringBuilder stringBuilder = new StringBuilder((int)new File("sample.txt").length());

        byte[] bytesBuffer = new byte[5];
        int len;
        while ( (len = raf.read(bytesBuffer)) != -1){
            // 采用追加方法写进字符串缓冲对象
            stringBuilder.append(raf.read(bytesBuffer,0,len));
        }

        // 拨回指针
        raf.seek(4);

        // 插入我们需要的数据内容
        raf.write("这是我们插入进去的数据".getBytes());

        // 再写入之前保存的数据
        raf.write(stringBuilder.toString().getBytes());

        // 释放
        raf.close();
    }
}
